package com.chen.listener;

import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 * HttpSessionListener 监听器 监听session的创建和销毁
 * HttpSessionAttributeListener 监听器 监听器 监听session的属性的添加、删除、替换（session域中进行增删改操作）
 * session 在使用请求对象调用 getSession方法时候创建 、
 * 在使用 HttpSession调用invalidate方法时候销毁，手动销毁 或者 超时销毁
 */
@WebListener
public class MySessionListener implements HttpSessionListener, HttpSessionAttributeListener {
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        System.out.println(se.getSession().hashCode() + "session 域创建了");

    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println(se.getSession().hashCode() + "session 域销毁了");
    }

    @Override
    public void attributeAdded(HttpSessionBindingEvent se) {
        System.out.println(se.getSession().hashCode() + "session 新增数据" + se.getName() + se.getValue());
    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent se) {
        System.out.println(se.getSession().hashCode() + "session 删除数据" + se.getName() + se.getValue());

    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent se) {
        System.out.println(se.getSession().hashCode() + "session 修改数据" + se.getName() + se.getValue() + "新的数据" + se.getSession().getAttribute(se.getName()));
    }
}
